package leetcode.set;

import java.util.HashSet;

/**
 * @Description: https://leetcode.cn/problems/intersection-of-two-arrays/
 * 给定两个数组 nums1 和 nums2 ，返回 它们的交集 。
 * 输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
 * @Author Ammar
 * @Create 2023/4/20 00:24
 */
public class _349_两个数组的交集 {
    public int[] intersection(int[] nums1, int[] nums2) {
        HashSet<Integer> set1 = new HashSet<>();
        HashSet<Integer> set2 = new HashSet<>();
        for (int i = 0; i < nums1.length; i++) {
            set1.add(nums1[i]);
        }
        for (int i = 0; i < nums2.length; i++) {
            set2.add(nums2[i]);
        }
        return intersection(set1, set2);
    }
    public int[] intersection(HashSet<Integer> set1, HashSet<Integer> set2) {
        if (set1.size() > set2.size()) intersection(set2, set1);
        HashSet<Integer> set = new HashSet<>();
        for (int i : set1) {
            if (set2.contains(i)) {
                set.add(i);
            }
        }
        int[] result = new int[set.size()];
        int index = 0;
        for(int s : set) {
            result[index++] = s;
        }
        return result;
    }
}
